#define _CRT_SECURE_NO_WARNINGS

//#include <iostream>
//#include <vector>
//using namespace std;
//
//int main()
//{
//    int n = 0;
//    cin >> n;
//    string str1, str2;
//    cin >> str1 >> str2;
//    vector<string> strs(n);
//    for (int i = 0; i < n; i++)
//    {
//        cin >> strs[i];
//    }
//    int prev1 = -1, prev2 = -1, ret = n;
//    for (int i = 0; i < n; i++)
//    {
//        if (strs[i] == str1)
//        {
//            if (prev2 != -1)
//            {
//                ret = min(i - prev2, ret);
//            }
//            prev1 = i;
//        }
//        else if (strs[i] == str2)
//        {
//            if (prev1 != -1)
//            {
//                ret = min(i - prev1, ret);
//            }
//            prev2 = i;
//        }
//    }
//    if (ret == n)
//        cout << -1;
//    else
//    {
//        cout << ret;
//    }
//    return 0;
//}

#include<iostream>
#include <string>
#include <vector>
using namespace std;

class Solution {
public:
    string solve(string s, string t)
    {
        reverse(s.begin(), s.end());
        reverse(t.begin(), t.end());
        int n = s.size(), m = t.size();

        vector<int> v(n + m);

        for (int i = 0; i < n; i++)
        {
            for (int j = 0; j < m; j++)
            {
                v[i + j] += (s[i] - '0') * (t[j] - '0');
            }
        }

        for (auto e : v)
            cout << e;

        string ret;
        int c = 0;
        for (int i = 0; i < n + m; i++)
        {
            c += v[i];
            ret += c % 10 + '0';
            c /= 10;
        }
        while (c)
        {
            ret += c % 10 + '0';
            c /= 10;
        }

        while (ret.size() > 1 && ret.back() == '0')
            ret.pop_back();

        reverse(ret.begin(), ret.end());
        return ret;
    }
};
int main()
{
    string s1 = "11";
    string s2 = "99";

    Solution().solve(s1, s2);


    return 0;
}